home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swags_z.zip / SOUND.SWG / 0053_SoundBlaster version....pas < prev    next >
Pascal/Delphi Source File  |  1994-08-25  |  2KB  |  42 lines

  1. {
  2.  Someone in an Assembly conference posted a routine to determine the
  3.  version of a Sound Blaster card. I've adapted it for use in TP ...
  4. }
  5.  
  6. PROGRAM sb;               { Determine Sound Blaster version.  TP5+  }
  7.                           { Jul.13.94 Greg Vigneault                }
  8. USES  Dos,                { import GetEnv                           }
  9.       Crt;                { import Delay                            }
  10. VAR Major, Minor : BYTE;  { version has major & minor parts         }
  11.  
  12. (*-----------------------------------------------------------------*)
  13. { this procedure returns 0.0 if any error condition...              }
  14. PROCEDURE SBver (VAR Maj, Min : BYTE);
  15.   VAR bev : STRING[32];                       { environment string  }
  16.       j,k : WORD;                             { scratch variables   }
  17.   BEGIN
  18.     Maj := 0;  Min := 0;                      { initialize          }
  19.     bev := GetEnv('BLASTER');                 { look in environment }
  20.     IF bev[0] = #0 THEN EXIT;                 { no sign of Blaster  }
  21.     j := Pos('A',bev);                        { search for i/o port }
  22.     IF j = 0 THEN EXIT ELSE INC(j);           { none?               }
  23.     Val( '$'+Copy(bev,j,3), j, k );           { base port number    }
  24.     IF k <> 0 THEN EXIT;                      { if bad port value   }
  25.     INC(j,$C);                                { command port        }
  26.     Port[j] := $E1;                           { command             }
  27.     DEC(j,2);                                 { input port          }
  28.     Delay(20);                                { wait for response   }
  29.     Maj := Port[j];                           { version major part  }
  30.     Delay(20);                                { wait for response   }
  31.     Min := Port[j];                           { version minor part  }
  32.   END {SBver};
  33.  
  34. BEGIN
  35.  
  36.   SBver (Major, Minor);
  37.   WriteLn;
  38.   WriteLn ('Sound Blaster version: ',Major,'.',Minor);
  39.   WriteLn;
  40.  
  41. END.
  42.